package com.hlkj.warboot.module_wx.controller;

import com.hlkj.warboot.configurer.util.LoggerUtil;
import com.hlkj.warboot.configurer.util.ResponseUtil;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;

/**
 * @Description: 微信活动基础
 * @Author: lixing
 * @Date: 2020-04-23 12:59
 */
@Controller
@RequestMapping("/wx/base")
public class BaseController {
    /**
     * @Description 微信公众平台-测试号管理 https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login
     * 接口配置信息修改-URL        （http://lixing.nat300.top/warboot/wx/base/callback）
     * JS接口安全域名             （9b2mcz.natappfree.cc）
     * 网页授权获取用户基本信息     （9b2mcz.natappfree.cc）
     */
    @GetMapping("callback")
    @ResponseBody
    public Object testUrl(String signature, String nonce, String echostr, String timestamp) {
        // 微信通过get的方式会请求该URL地址,并且携带三个参数signature, nonce, echostr, timestamp,只需要把微信请求的参数echostr返回给微信就可以了
        LoggerUtil.info("✈✈✈✈微信公众平台-测试号管理-接口配置信息-URL✈✈✈✈");
        try {
            LoggerUtil.info("signature-" + signature);
            LoggerUtil.info("nonce-" + nonce);
            LoggerUtil.info("echostr-" + echostr);
            LoggerUtil.info("timestamp-" + timestamp);
            return echostr;
        } catch (Exception e) {
            return ResponseUtil.fail(e.getMessage());
        }
    }

    /**
     * @Description TODO 错误页面
     * http://jfgna3.natappfree.cc/warboot/wx/base/error
     * @Author lixing
     * @Date 2020-04-23 21:07
     */
    @RequestMapping("error")
    public ModelAndView error(HttpServletRequest request) throws UnsupportedEncodingException {
        ModelAndView modelAndView = new ModelAndView("wx/hkSeckill/error");
        String errCode = request.getParameter("code");
        String errMessage = request.getParameter("message");
        if ("1".equals(errCode)) {
            modelAndView.addObject("message", "请使用微信应用打开");
        } else if ("2".equals(errCode)) {
            modelAndView.addObject("message", "通过code换取网页授权access_token失败");
        } else if ("3".equals(errCode)) {
            modelAndView.addObject("message", "通过access_token换取用户信息失败");
        } else if ("4".equals(errCode)) {
            modelAndView.addObject("message", URLDecoder.decode(errMessage, "utf-8"));
        } else if ("5".equals(errCode)) {
            modelAndView.addObject("message", URLDecoder.decode(errMessage, "utf-8"));
        } else {
            modelAndView.addObject("message", "错误编码解析出错");
        }
        return modelAndView;
    }
}
